package cn.lcsjsxy.yxc.multithreading.mode2;

/**
 * 创建多线程的方式二：实现Runnable接口
 * 1.创建一个实现了Runnable接口的类
 * 2.实现类去实现Runnable中的抽象方法：run（）
 * 3.创建实现类的对象
 * 4.将此对象作为参数传递到Thread类的构造器中，创建Thread类的对象
 * 5.通过Thread类的对象调用start（）
 *
 * 比较创建线程的两种方式:
 * 开发中：优先选择：实现Runnable接口的方式
 * 原因：1.实现的方式没有类的但继承性的局限性
 *      2.实现的方式更适合来处理多个线程有共享数据的情况
 * 联系：public class Thread implements Runnable
 * 相同点：两种方式都需要重写run（）方法，将线程需要执行的逻辑声明再run（）中。
 */

//创建一个实现了Runnable接口的类
class MyThread implements Runnable{

    //重写（实现）run（）
    @Override
    public void run() {
        for (int i=0;i<100;i++){
            System.out.println(Thread.currentThread().getName()+":"+i);
        }
    }
}

public class ThreadTest{
    public static void main(String[] args) {
        //创建实现类的对象
        MyThread myThread=new MyThread();
        //将此对象作为参数传递到Thread类的构造器中，创建Thread类的对象
        Thread thread=new Thread(myThread);
        //通过Thread类的对象调用start
        thread.start();
        //再启动一个线程
        Thread thread1=new Thread(myThread);
        thread1.start();
    }
}
